import numpy as np
from typing import Optional

def init(configPath=None): ...

def aclrt_set_device(device_id: int) -> int: ...

class NPUArray:
    def __init__(self, shape: list, dtype: np.dtype) -> None: ...
    def to_numpy(self) -> np.ndarray: ...
    
    @staticmethod
    def from_numpy(host_data: np.ndarray) -> NPUArray: ...


def ones(shape: list, dtype: np.dtype) -> NPUArray: ...

def zeros(shape: list, dtype: np.dtype) -> NPUArray: ...

def add(a: NPUArray, b: NPUArray) -> NPUArray: ...

def sub(a: NPUArray, b: NPUArray) -> NPUArray: ...

def print(a: NPUArray) -> None: ...

def eye(n: int, dtype: np.dtype) -> NPUArray: ...

def full(shape: list, dtype: np.dtype, value: int) -> NPUArray: ...

def empty(shape: list, dtype: np.dtype) -> NPUArray: ...

def arange(start: float, stop: float, step: float = 1.0, dtype: Optional[np.dtype] = None) -> NPUArray: ...